#类
#创建dog类
class dog :
    def __init__(self,name,age):
        self.name = name #局部变量name的值赋给实例属性self.name
        self.age = age
    def show(self):
        print(f'{self.name} sitting')
    def roll(self):
        print(f'{self.name} rolled')
#类中的函数称为方法 __init__()是一个特殊方法，没根据dog类创建实例时，都会自动运行它 self必须在其他形参前面
#根据类创建实例
my_dog = dog('jack',3)
print(my_dog.name)
print(my_dog.age)
#在Python中，当你在类的方法内部（如__init__）使用self.name和self.age时，self代表类的当前实例对象。
# 但当你通过实例对象访问属性时（类外部），不需要再加self前缀，因为self是方法内部的隐式引用。
#调用方法
my_dog.show()
my_dog.roll()
#调用多个实例
your_dog = dog('peter',4)
print(your_dog.name)
print(your_dog.age)
#使用类和实例
#给属性指定默认值
#有些属性无须通过形参来定义，可以在__init__()方法中为其指定默认值
class car:
    def __init__(self,make,year):
        self.make = make
        self.year = year
        self.odometer_reading = 0
    def read_car(self):
        print(f'{self.make},{self.year},{self.odometer_reading}')
    #通过方法修改属性的值
    def update_odometer(self, mileage):
        self.odometer_reading = mileage
    #通过方法让属性递增
    def increase_odometer(self, miles):
        self.odometer_reading += miles
my_car = car('honda',19)
my_car.read_car()
#直接修改
#my_car.odometer_reading = 19
#方法修改
my_car.update_odometer(23)
my_car.read_car()
#方法递增
my_car.increase_odometer(2)
my_car.read_car()
